package com.glodon.paas.document.dao;

import static org.junit.Assert.*;

import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import com.glodon.paas.document.dao.domain.PartEntity;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(value = { "classpath:test-document-dao.xml", "classpath:paas-document-dao-mysql.xml" })
@Ignore
public class PartDaoMySqlIT {

    String  defaultRevisionId = "defaultRevisionId";
    String  defaultId         = "defaultId";

    @Autowired
    PartDao partDao;

    @Test
    public void testCRUD() {
        // clear
        partDao.delParts(defaultRevisionId);
        // new
        PartEntity entity = new PartEntity();
        entity.setIndex(1);
        entity.setId(defaultId + 1);
        entity.setKey("key");
        entity.setRevisionId(defaultRevisionId);
        // entity.setSize(size)
        entity.setETag("eTag");
        // insert 1
        partDao.insert(entity);
        // insert 2
        entity.setId(defaultId + 2);
        entity.setIndex(2);
        partDao.insert(entity);

        // get
        assertEquals(1, partDao.get(defaultId + 1).getIndex());
        assertEquals(2, partDao.getLatestPartByRevision(defaultRevisionId).getIndex());
        assertEquals(2, partDao.getPartsByRevision(defaultRevisionId).size());
        assertEquals(2, partDao.getPartsCountByRevision(defaultRevisionId));
        // delete
        partDao.delete(defaultId + 2);
        assertEquals(1, partDao.getLatestPartByRevision(defaultRevisionId).getIndex());
        assertEquals(1, partDao.getPartsByRevision(defaultRevisionId).size());
        assertEquals(1, partDao.getPartsCountByRevision(defaultRevisionId));

        // delParts
        partDao.delParts(defaultRevisionId);
        assertEquals(null, partDao.getLatestPartByRevision(defaultRevisionId));
        assertEquals(0, partDao.getPartsByRevision(defaultRevisionId).size());
        assertEquals(0, partDao.getPartsCountByRevision(defaultRevisionId));

    }

}
